home *** CD-ROM | disk | FTP | other *** search
/ Mac Easy 2010 May / Mac Life Ubuntu.iso / casper / filesystem.squashfs / usr / src / linux-headers-2.6.28-15 / arch / arm / include / asm / glue.h < prev    next >
Encoding:
C/C++ Source or Header  |  2008-12-24  |  3.3 KB  |  150 lines

  1. /*
  2.  *  arch/arm/include/asm/glue.h
  3.  *
  4.  *  Copyright (C) 1997-1999 Russell King
  5.  *  Copyright (C) 2000-2002 Deep Blue Solutions Ltd.
  6.  *
  7.  * This program is free software; you can redistribute it and/or modify
  8.  * it under the terms of the GNU General Public License version 2 as
  9.  * published by the Free Software Foundation.
  10.  *
  11.  *  This file provides the glue to stick the processor-specific bits
  12.  *  into the kernel in an efficient manner.  The idea is to use branches
  13.  *  when we're only targetting one class of TLB, or indirect calls
  14.  *  when we're targetting multiple classes of TLBs.
  15.  */
  16. #ifdef __KERNEL__
  17.  
  18.  
  19. #ifdef __STDC__
  20. #define ____glue(name,fn)    name##fn
  21. #else
  22. #define ____glue(name,fn)    name/**/fn
  23. #endif
  24. #define __glue(name,fn)        ____glue(name,fn)
  25.  
  26.  
  27.  
  28. /*
  29.  *    Data Abort Model
  30.  *    ================
  31.  *
  32.  *    We have the following to choose from:
  33.  *      arm6          - ARM6 style
  34.  *      arm7        - ARM7 style
  35.  *      v4_early    - ARMv4 without Thumb early abort handler
  36.  *      v4t_late    - ARMv4 with Thumb late abort handler
  37.  *      v4t_early    - ARMv4 with Thumb early abort handler
  38.  *      v5tej_early    - ARMv5 with Thumb and Java early abort handler
  39.  *      xscale    - ARMv5 with Thumb with Xscale extensions
  40.  *      v6_early    - ARMv6 generic early abort handler
  41.  *      v7_early    - ARMv7 generic early abort handler
  42.  */
  43. #undef CPU_DABORT_HANDLER
  44. #undef MULTI_DABORT
  45.  
  46. #if defined(CONFIG_CPU_ARM610)
  47. # ifdef CPU_DABORT_HANDLER
  48. #  define MULTI_DABORT 1
  49. # else
  50. #  define CPU_DABORT_HANDLER cpu_arm6_data_abort
  51. # endif
  52. #endif
  53.  
  54. #if defined(CONFIG_CPU_ARM710)
  55. # ifdef CPU_DABORT_HANDLER
  56. #  define MULTI_DABORT 1
  57. # else
  58. #  define CPU_DABORT_HANDLER cpu_arm7_data_abort
  59. # endif
  60. #endif
  61.  
  62. #ifdef CONFIG_CPU_ABRT_LV4T
  63. # ifdef CPU_DABORT_HANDLER
  64. #  define MULTI_DABORT 1
  65. # else
  66. #  define CPU_DABORT_HANDLER v4t_late_abort
  67. # endif
  68. #endif
  69.  
  70. #ifdef CONFIG_CPU_ABRT_EV4
  71. # ifdef CPU_DABORT_HANDLER
  72. #  define MULTI_DABORT 1
  73. # else
  74. #  define CPU_DABORT_HANDLER v4_early_abort
  75. # endif
  76. #endif
  77.  
  78. #ifdef CONFIG_CPU_ABRT_EV4T
  79. # ifdef CPU_DABORT_HANDLER
  80. #  define MULTI_DABORT 1
  81. # else
  82. #  define CPU_DABORT_HANDLER v4t_early_abort
  83. # endif
  84. #endif
  85.  
  86. #ifdef CONFIG_CPU_ABRT_EV5TJ
  87. # ifdef CPU_DABORT_HANDLER
  88. #  define MULTI_DABORT 1
  89. # else
  90. #  define CPU_DABORT_HANDLER v5tj_early_abort
  91. # endif
  92. #endif
  93.  
  94. #ifdef CONFIG_CPU_ABRT_EV5T
  95. # ifdef CPU_DABORT_HANDLER
  96. #  define MULTI_DABORT 1
  97. # else
  98. #  define CPU_DABORT_HANDLER v5t_early_abort
  99. # endif
  100. #endif
  101.  
  102. #ifdef CONFIG_CPU_ABRT_EV6
  103. # ifdef CPU_DABORT_HANDLER
  104. #  define MULTI_DABORT 1
  105. # else
  106. #  define CPU_DABORT_HANDLER v6_early_abort
  107. # endif
  108. #endif
  109.  
  110. #ifdef CONFIG_CPU_ABRT_EV7
  111. # ifdef CPU_DABORT_HANDLER
  112. #  define MULTI_DABORT 1
  113. # else
  114. #  define CPU_DABORT_HANDLER v7_early_abort
  115. # endif
  116. #endif
  117.  
  118. #ifndef CPU_DABORT_HANDLER
  119. #error Unknown data abort handler type
  120. #endif
  121.  
  122. /*
  123.  * Prefetch abort handler.  If the CPU has an IFAR use that, otherwise
  124.  * use the address of the aborted instruction
  125.  */
  126. #undef CPU_PABORT_HANDLER
  127. #undef MULTI_PABORT
  128.  
  129. #ifdef CONFIG_CPU_PABRT_IFAR
  130. # ifdef CPU_PABORT_HANDLER
  131. #  define MULTI_PABORT 1
  132. # else
  133. #  define CPU_PABORT_HANDLER(reg, insn)    mrc p15, 0, reg, cr6, cr0, 2
  134. # endif
  135. #endif
  136.  
  137. #ifdef CONFIG_CPU_PABRT_NOIFAR
  138. # ifdef CPU_PABORT_HANDLER
  139. #  define MULTI_PABORT 1
  140. # else
  141. #  define CPU_PABORT_HANDLER(reg, insn)    mov reg, insn
  142. # endif
  143. #endif
  144.  
  145. #ifndef CPU_PABORT_HANDLER
  146. #error Unknown prefetch abort handler type
  147. #endif
  148.  
  149. #endif
  150.